quartz的使用检测测试任务

原来使用的是多线程方式,但在系统关闭上还是有用些 小问题。就考虑了引入任务调度框架quartz。

使用场景:每两秒钟获取一次测试任务。

  1. 引入jar文件 我采用的maven进行jar的管理

    pom.xml中加入  

  1. 	<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
            <dependency>
                <groupId>org.quartz-scheduler</groupId>
                <artifactId>quartz</artifactId>
                <version>2.3.0</version>
            </dependency>

    2. 创建一个job类,该类是我们要实现的业务 这里就是获取测试任务


  2. public class GetTask implements Job{ 
         DaoServiceImpl daoService = new DaoServiceImpl();
         int taskid = 0;
     public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {  
     
          taskid = daoService.GetTaskId("0");
    		if (taskid==0) {
    			System.out.println("found task ,taskid="+taskid);
    	
    		} else { 
    		
    		System.out.println("no task");
    		}		
    
    }
    
    }
  3. 3. 在创建一个类来触发我们的任务

public class RunnerScheduler {
    public static void main(String[] args) throws SchedulerException {
       
//        实现定期检索任务
        JobDetail jobDetail = JobBuilder.newJob(GetTask.class).withIdentity("mytask").build();
        //创建一个Trigger触发器的实例,定义该job立即执行,并且每2秒执行一次,一直执行
        SimpleTrigger triggerDetail = TriggerBuilder.newTrigger().withIdentity("myTrigger").startNow().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(5).repeatForever()).build();
        sched.scheduleJob(jobDetail, triggerDetail); 
	StdSchedulerFactory factory = new StdSchedulerFactory();
        Scheduler scheduler = factory.getScheduler();
        scheduler.start();
        scheduler.scheduleJob(jobDetail,trigger);


    }
}


上面方法是通过 main完成运行。


在我实际使用中是通过点击按钮进行启动

	jb.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent event) {
				jb.getText();
				String ss;
				ss = jb.getText();
				if (ss.equals("启动服务")) {
					jb.setText("关闭服务");
					jl.setText("执行服务状态:启动 ");
					jta.setText("服务已启动");
					jbCloseIndex.setEnabled(false);
//					 此处调用Quartz 实现运行
					 RunnerScheduler runner = new RunnerScheduler();  
			        try {
						runner.run();
					} catch (Exception e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
			        }
			












    相关标签:


    评论: